#include<bits/stdc++.h>
using namespace std;
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
const int N=2e5+10;
#define INF 0x3f3f3f3f;
typedef long long int ll;
#define close(); std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
//----------------------------------------------------------------------------//

void solve()
{
	string s1,s2;//s1长,s2短
	cin>>s1>>s2;
	//if(s1.size()<s2.size()) swap(s1,s2);

	// int a[2]={0,0};
	// for(auto&k:s1) a[k-'a']++;
	// for(auto&k:s2) a[k-'a']++;
	// if(a[0]==0||a[1]==0)
	// {
	// 	char c;
	// 	if(a[0]==0) c='b';
	// 	else c='a';

	// 	int t;
	// 	if(s1.size()%s2.size()!=0) t=s1.size()*s2.size();
	// 	else t=s1.size();

	// 	while(t--) cout<<c;
	// 	cout<<'\n';
	// 	return;
	// }


	// cout<<"s1 "<<s1.size()<<'\n';
	// cout<<"s2 "<<s2.size()<<'\n';

	// if(s1.size()<s2.size()||s1.size()%s2.size()!=0) {cout<<-1<<'\n';return;}

	// int m=s2.size();
	// for(int i=0;i<s1.size();i++)
	// {
	// 	if(s1[i]!=s2[i%m]) {cout<<-1<<'\n';return;}
	// }

	// int t=s1.size()/s2.size();

	// while(t--)
	// {
	// 	cout<<s2;
	// }

	// cout<<'\n';

	string s3,s4;
	ll g=lcm((ll)s1.size(),(ll)s2.size());
	for(int i=0;i<g;i++)
	{
		s3.push_back(s1[i%s1.size()]);
		s4.push_back(s2[i%s2.size()]);

		if(s3[i]!=s4[i]) {cout<<-1<<'\n';return;}
	}

	//for(auto&k:s3) cout<<k;
	cout<<s3;
	cout<<'\n';




}

int main()
{
	close();
	int T; cin>>T;
	while (T--) solve();
	return 0;
}